<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //async 是一个异步关键字，放置在函数前面，
        // 用于修饰一个函数(具名函数，匿名函数，箭头函数)
        // 修饰的函数执行后会返回一个Promise对象 
        // async function demo(){   }    // 具名函数
        // const demo = async function(){  } // 匿名函数
        // const demo = async () => { }  // 箭头函数

        // 被async修饰函数返回一个新的Promise对象，对象的结果如下：
            // ① 如果抛出异常, 新promise变为rejected, reason为抛出的异常
            // ② 如果返回的是非promise的任意值, 新promise变为resolved, value为返回的值
            // ③ 如果返回的是另一个新promise, 此promise的结果就会成为新promise的结果 

        // 定义函数
        async function demo(){
            //throw "error";
            //console.log(mm);
            return 100;
        }

        const p = demo();

        console.log(p);
        //p.then()

        // 定义一个箭头函数
        const fn = async () => {
            //return "Hello";
            return Promise.reject("错误！");
        }

        const p2 = fn();
        console.log(p2);
    </script>
</body>
</html>